package edu.cth.scrabbit.client.ctrl;

import edu.cth.scrabbit.client.view.panels.LetterTile;
import edu.cth.scrabbit.shared.GameLetter;

/**
 * Gets information from the view and sends directives to the client model
 * 
 * @author Marcus Harryson, Anders Jonsson
 * 
 */

public interface IClientController {

	/**
	 * A method used to host a game, and set the player's name to nickname.
	 * 
	 * @param nickname
	 */

	public abstract void hostGame(String nickname);

	/**
	 * A method used to connect the client to the host with the ip-address ip
	 * and set the player's name to nickname
	 * 
	 * @param ip
	 * @param nickname
	 */

	public abstract void joinGame(String ip, String nickname);

	/**
	 * A method used to start the game
	 */
	public abstract void startGame();

	/**
	 * A method used to choose one of your own game letter
	 * @param letter
	 */
	public abstract void select(GameLetter letter);
	
	/**
	 * A method used to put the player's letter on the game board, which will remain 
	 * "temporary" until the player presses an action button 
	 * @param letter
	 */
	public abstract void selectGameBoardTile(GameLetter letter);
	
	/*
	 * The following are all play-related actions better described elsewhere:
	 */
	public abstract void pass();

	public abstract void swap();

	public abstract void play();

	public abstract void clear();
}